فرض کن یه دستور پخت داری که باید مراحل رو به ترتیب انجام بدی. اول مواد رو آماده کن، بعد طبخ کن، بعد سرو کن. توی لینوکس، اسکریپت (Script) دقیقاً همینه: یه سری دستورات که به ترتیب اجرا میشن. این جلسه بهت یاد میده چطور این دستورات رو به هم وصل کنی، شرط بذاری و خروجیها رو مدیریت کنی!
Shell Scripting به معنی نوشتن یک سری دستورات در یک فایل متنی است که بهصورت متوالی اجرا میشوند. این کار به شما امکان میدهد:
با استفاده از سمیکالن (;) میتوانید چندین فرمان را در یک خط اجرا کنید، بدون توجه به موفقیت یا شکست هر یک.
توضیح: سه دستور date، free و uname -a به ترتیب اجرا میشوند.
; همه دستورات را بدون در نظر گرفتن موفقیت یا شکست اجرا میکند.
&&)
&& (AND) فرمان دوم را فقط در صورتی اجرا میکند که فرمان اول با موفقیت (کد خروجی ۰) اجرا شده باشد.
توضیح: اگر mkdir test_dir موفق باشد، پیام چاپ میشود. در غیر این صورت، پیام چاپ نمیشود.
&& یعنی «اگر دستور اول موفق بود، دستور دوم را اجرا کن».
||)
|| (OR) فرمان دوم را فقط در صورتی اجرا میکند که فرمان اول با شکست (کد خروجی غیر از ۰) مواجه شده باشد.
توضیح: اگر ping به آدرس ۱۹۲.۱۶۸.۲۰۰.۱۰۰ ناموفق باشد، پیام «Host not up» چاپ میشود.
|| یعنی «اگر دستور اول شکست خورد، دستور دوم را اجرا کن».
&& و ||میتوانید این دو عملگر را با هم ترکیب کنید تا منطق پیچیدهتری بسازید:
توضیح: اگر command1 موفق باشد، command2 اجرا میشود. اگر command1 شکست بخورد، command3 اجرا میشود.
با استفاده از > و >> میتوانید خروجی یک فرمان را به یک فایل هدایت کنید.
> (بازنویسی)>> (افزودن)
توضیح: > فایل را با «Hello» بازنویسی میکند و >> «World» را به انتهای آن اضافه میکند.
> بازنویسی میکند، >> به انتها اضافه میکند.
<)
با < میتوانید ورودی یک فرمان را از یک فایل بخوانید.
توضیح: cat محتوای فایل file.txt را به عنوان ورودی میخواند.
|)
| (Pipe) خروجی یک فرمان را به عنوان ورودی فرمان دیگر میفرستد.
توضیح: خروجی ls -la به grep داده میشود تا فقط خطوط حاوی «.txt» را نمایش دهد.
| خروجی فرمان اول را به ورودی فرمان دوم میدهد.
| عملگر | کاربرد | مثال |
|---|---|---|
; |
اجرای چند فرمان پشت سر هم | date; whoami |
&& |
اجرای فرمان دوم در صورت موفقیت فرمان اول | mkdir test && echo "OK" |
|| |
اجرای فرمان دوم در صورت شکست فرمان اول | ping 1.1.1.1 || echo "Down" |
> |
بازنویسی خروجی در فایل | echo "Hi" > file.txt |
>> |
افزودن خروجی به انتهای فایل | echo "Bye" >> file.txt |
< |
ورودی از فایل | cat < file.txt |
| |
انتقال خروجی به ورودی فرمان دیگر | ls | grep ".txt" |